package com.android.pos;

import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.SimpleCursorAdapter;

import com.android.pos.db.POSDbAdapter;

public class TableList extends ListActivity {
	  private static final int ACTIVITY_CREATE=0;
	  private static final int ACTIVITY_EDIT=1;

	  private static final int INSERT_ID = Menu.FIRST;
	  private static final int DELETE_ID = Menu.FIRST + 1;
	  
	  private POSDbAdapter mDbHelperTable;  
	  
	  private static final String Flag = "TableList";  
	  
	  /** Called when the activity is first created. */
	  @Override
	  public void onCreate(Bundle savedInstanceState) {
	      super.onCreate(savedInstanceState);
	      
	      setContentView(R.layout.table_list);
	      mDbHelperTable = new POSDbAdapter(this);
	      mDbHelperTable.open();
	      
	      // 화면을 그리자
	      fillData();
	      
	      // 컨텍스트 메뉴 등록...
	      // 리스트 뷰에 있는 아이템들을 컨텍스트 메뉴에 등록하기 위해서
	      // 이 Activity는 ListActivity를 상속 받기 때문에 
	      // getListView()가 Activity를 위해서 리턴된다.
	      // 가장 마지막에 던져 주자.
	      registerForContextMenu(getListView());
	  }  
	  
	  private void fillData() {
	      // Get all of the rows from the database and create the item list
		  Cursor tableCursor = mDbHelperTable.fetchAllTables();
	      startManagingCursor(tableCursor);

	      // Create an array to specify the fields we want to display in the list (only TITLE)
	      String[] from = new String[]{
	    		  						 POSDbAdapter.KEY_TABLEROWID
	    		  						,POSDbAdapter.KEY_TABLE 
	    		  						,POSDbAdapter.KEY_DESC
	      };
	      
	      // and an array of the fields we want to bind those fields to (in this case just text1)
	      int[] to = new int[]{
    		  					  R.id.txt_tblpk
	    		  				, R.id.txt_table
	    		  				, R.id.txt_desc
	      };

	      // Now create a simple cursor adapter and set it to display
	      SimpleCursorAdapter tables = 
	          new SimpleCursorAdapter(this, R.layout.table_row, tableCursor, from, to);
	      
	      // 
	      setListAdapter(tables);
	  }  
		
	    // way to add bottom hide/unhide panel
	    // 아래 옵션 (아이템 추가) 메뉴...
	    // 숨겼다 나타난다.
	    @Override
	    public boolean onCreateOptionsMenu(Menu menu) {
	        super.onCreateOptionsMenu(menu);
	        menu.add(0, INSERT_ID, 0, R.string.menu_addtable);
	        return true;
	    }

	    @Override
	    public boolean onMenuItemSelected(int featureId, MenuItem item) {
	        switch(item.getItemId()) {
	            case INSERT_ID:
	            	createTable();	            	
	                return true;
	        }

	        return super.onMenuItemSelected(featureId, item);
	    }	
	    
	    private void createTable() {
	        Intent i = new Intent(this, TableEdit.class);
	        startActivityForResult(i, ACTIVITY_CREATE);
	    }	
	    
	    // onCreateContextMenu 메뉴를 재정의
	    // 다시 삭제를 위해 한줄이 추가되었다.
	    // 삭제하기위한 이 옵션 메뉴는 보이지 않는다.
	    // 이 삭제 메뉴는 오래누르기를 하고 있으면 나타난다.
	    @Override
	    public void onCreateContextMenu(ContextMenu menu, View v,
	            ContextMenuInfo menuInfo) {
	        super.onCreateContextMenu(menu, v, menuInfo);
	        menu.add(0, DELETE_ID, 0, R.string.menu_deletetable);
	    }

	    // 오래누르기를 했을때 나오는 메뉴 중 하나를 눌렀을때 이벤트
	    @Override
	    public boolean onContextItemSelected(MenuItem item) {
	        switch(item.getItemId()) {
	            case DELETE_ID:
	                AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
	                mDbHelperTable.deleteTable(info.id);
	                fillData();
	                return true;
	        }
	        return super.onContextItemSelected(item);
	    }

	    @Override
	    protected void onActivityResult(int requestCode, int resultCode, Intent intent){
	    	super.onActivityResult(requestCode, resultCode, intent);
	    	fillData();
	    }
}
